package com.ethink.warehouse.service.impl;

import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.ethink.framework.common.db.PageUtils;
import com.ethink.warehouse.api.info.MateInventoryDetailInfo;
import com.ethink.warehouse.api.info.MateSkuAndMateSkuNameInfo;
import com.ethink.warehouse.api.request.MateInventoryQueryBySkuRequest;
import com.ethink.warehouse.api.request.MateInventoryQueryRequest;
import com.ethink.warehouse.api.response.MateInventoryQueryBySkuResponse;
import com.ethink.warehouse.common.mapper.MateInventoryMapper;
import com.ethink.warehouse.common.mapper.SubWarehouseMapper;
import com.ethink.warehouse.converter.MateInventoryConverter;
import com.ethink.warehouse.service.MateInventoryService;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import java.util.List;
import java.util.Map;

/**
 * 仓库库存 Service接口实现
 *
 * @author default
 * @date 2022-11-08
 */
@Slf4j
@Service
public class MateInventoryServiceImpl implements MateInventoryService {

    @Autowired
    private MateInventoryMapper mateInventoryMapper;

    @Autowired
    private MateInventoryConverter mateInventoryConverter;
    @Autowired
    private SubWarehouseMapper subWarehouseMapper;

    @Override
    public Page<MateInventoryDetailInfo> queryMateInventory(MateInventoryQueryRequest request) {
        return mateInventoryMapper.queryMateInventory(PageUtils.buildPage(request), request);
    }

    @Override
    public Page<MateInventoryQueryBySkuResponse> queryMateInventoryBySku(MateInventoryQueryBySkuRequest request) {
        return mateInventoryMapper.queryMateInventoryBySku(PageUtils.buildPage(request), request);
    }

    /**
     * 查询商品名称
     *
     * @param mateSkuList
     * @return
     */
    @Override
    public List<MateSkuAndMateSkuNameInfo> queryMateSkuNameByMateSku(List<String> mateSkuList) {
        return mateInventoryMapper.queryMateSkuNameByMateSku(mateSkuList);
    }

    /**
     * 汇总
     *
     * @param request
     * @return
     */
    @Override
    public MateInventoryQueryBySkuResponse queryMateInventoryBySkuSum(MateInventoryQueryBySkuRequest request) {
        return mateInventoryMapper.queryMateInventoryBySkuSum(request);
    }
}